# 设置最低的CMake版本要求为3.10
cmake_minimum_required(VERSION 3.10)

# 生成 compile_commands.json 文件，方便使用一些工具（如clangd）进行代码补全和分析
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

# 定义项目名称
project(c_test)

# 默认是Release模式，设置为Debug才能调试
set(CMAKE_BUILD_TYPE "Debug") 

# 设置C标准为C99
set(CMAKE_C_STANDARD 99)
# 设置C++标准为C++11
set(CMAKE_CXX_STANDARD 11)

# 设置生成的可执行文件的输出目录为项目根目录下的bin目录
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build/bin)

# 添加全局定义
add_definitions(
    # -DUSE_MONITOR=1
    # -DUSE_MOUSE=1
    # -DUSE_SIMULATOR=1
)

# 添加包含目录
include_directories(
    # lib
    ${PROJECT_SOURCE_DIR}/src/lib/debug
    ${PROJECT_SOURCE_DIR}/src/lib/general
    ${PROJECT_SOURCE_DIR}/src/lib/QJson_old

    # test
    # ${PROJECT_SOURCE_DIR}/src/app/protocol
    ${PROJECT_SOURCE_DIR}/src/test
)

# 查找目录下的所有.c文件
file(GLOB MAIN_C "${PROJECT_SOURCE_DIR}/main_fn/make_for_win/*.c")                  # 主文件入口
file(GLOB TEST_C "${PROJECT_SOURCE_DIR}/src/test/ZL_JsonPrase.c")                   # 中联解析问题测试
# file(GLOB TEST_C "${PROJECT_SOURCE_DIR}/src/app/protocol/*.c")                      # led串口通信显示测试

file(GLOB QJSON_OLD_C "${PROJECT_SOURCE_DIR}/src/lib/QJson_old/*.c")                # QJson旧解析库


# # 查找目录下的所有.cpp文件
# file(GLOB_RECURSE ASYN_CPP "${PROJECT_SOURCE_DIR}/src/asyn/*.cpp")

# 定义一个可执行文件，并包含源文件src目录下的所有C和C++文件
add_executable(${PROJECT_NAME}
    ${MAIN_C}
    ${TEST_C}
    ${QJSON_OLD_C}
)

# 添加全局编译选项
add_compile_options(-g)                 # 添加调试信息

# 将多个库链接到x86_wfm_ui可执行文件中
target_link_libraries(${PROJECT_NAME}
    # pthread                             # pthread库
)